/*----------------------------------------------------------------------------------------
*
*  Copyright 2019, Gao Hai Hui, <fromzeropoint@126.com>.  All rights reserved.
*  https://gitee.com/helloworldghh/xoskit.git
*  Use of this source code is governed by a MIT license
*  that can be found in the License file.
*
----------------------------------------------------------------------------------------*/
#include "../import/head.h"
#include "../macro/head.h"
#include "../impl/head.h"
#include "core.h"
#include "odbc.h"

namespace xos_container
{

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	// 

    static xos_odbc::i_odbc_mgr * odbc_mgr_ptr = 0;
    static xos::i_dynamic * xos_module = 0;

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	// 

    odbc::odbc()
    {
    }

    odbc::~odbc()
    {
        term();
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // 

	xos_odbc::i_odbc_mgr * odbc::get()
	{
		return odbc_mgr_ptr;
	}

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	// 

    int odbc::init()
    {
        int ret = 0;

        xos_odbc::f_create fun = 0;

        if( 0 == ret )
        {
            xos_module = core::get()->dynamic();
        }

        if( 0 == ret )
        {
            ret = xos_module->load_and_get( ( void** )&fun, 
                core::get()->exe_path(),
                "xos_odbc",
                "create" );
        }

        if( 0 == ret )
        {
            ret = fun( mgr::container(), &odbc_mgr_ptr );
        }

		return ret;
    }

    int odbc::term()
    {
        int ret = 0;

        xos_stl::release_interface( odbc_mgr_ptr );
        xos_stl::release_interface( xos_module );

        return ret;
    }

} // xos_container
